package Menu;

import SistemaGeneral.TheRace;
import java.io.IOException;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.rms.InvalidRecordIDException;
import javax.microedition.rms.RecordComparator;
import javax.microedition.rms.RecordEnumeration;
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;
import javax.microedition.rms.RecordStoreNotOpenException;

/**
 * Esta clase administra a todos los objetos necesarios para crear el menú, los manda actualizar y los
 * dibuja, principalmente controla en que tiempo se van a crear todas las imagenes para
 * dejar un margen para dar tiempo de escalarlas
 *
 * Equipo: The Dream Team
 * @author Arturo Ramires Morales
 * @author José Francisco Ruiz Martínez
 * @author José Héctor Bermúdez Robles
 * @version 1.3  Noviembre 2010
 */
public class Menu extends GameCanvas {
    // Todos los objetos que tendrá¡ nuestro juego
    //private Logo logoTec, logoJuego;
    /**
     * Guarda el valor del ancho de la pantalla
     */
    public int ANCHO, ALTO,posicionTexto,estadoTexto=0;        // Ancho y alto de la pantalla del celular
    /**
     * Guarda el valor del alto de la pantalla
     */
    // El animador es un Thread que corre en segundo plano
    private AnimadorMenu animador;  // Estará avisando a cada rato que se actualice y dibuje
    private Graphics g;         // Contexto gráfico para hacer trazos
    // Es la referencia para detener la aplicación
    private TheRace midlet;
     //Objeto de la clase pantalla, en la cual se dibujan todas las imágenes del menú
    private Pantalla pantalla;
    //Muestra la imagen que se viusaliza en el menú, es decir, la que está en tiempo presente
    private Image fondoMenu;
    //Se crea el contador para la imagen del logo
    private boolean pantallaSalir = false, opcionesMenu = false,opcionSalir=false,opcionSonido=true,opcionVibrar=true,juegoNuevo=false,girarPantalla=false;
    private boolean pMario=false, pLuigi=false, verInstrucciones=false,verCreditos=false, verMarcador = false;
    private int posicionYPresionada,posicionXPresionada, posicionYDesplazada, posicionYAlDejarDeTocar, diferenciaAlDesplazar, contadorClicks;
    private int desactivarTexto=10,personaje=1;
    private long tiempoAlPresionar, tiempoAlDespegar, diferenciaDeTiempo;
    private boolean dobleClick, menuDestruido=false,cargandoJuego=false;
    private boolean pausado= false;

    /**
     * Dibuja los logos del Tecnologico y del juego como el menu
     * @param midlet Se envia el midlet para poder terminar la aplicacion
     * si se quiere salir de ella o si hay algun error al cargar imagenes
     */
    public Menu(TheRace midlet) {

        super(true);
        this.midlet = midlet;
        this.setFullScreenMode(true);
        this.ANCHO = this.getWidth();
        this.ALTO = this.getHeight();
        this.posicionTexto = this.getHeight();
        g = this.getGraphics();
        try {
            // Crear todos los objetos
            pantalla = new Pantalla();

        } catch (IOException ex) {
            ex.printStackTrace();
            //Termina el programa si no puede crear un menu
            animador.terminar();
        }
        fondoMenu = pantalla.inicio;
        // Ultimas líneas que inician la animación
        animador = new AnimadorMenu(this);
        animador.iniciar();
    }

    /**
     *
     * @param x Posición en la coordenada x que manda al presionar algún punto en la pantalla
     * @param y Posición en la coordenada y que manda al presionar algún punto en la pantalla
     */
    protected void pointerPressed(int x, int y) {

        this.posicionYPresionada = y;
        this.posicionXPresionada = x;
        this.posicionYAlDejarDeTocar = this.posicionYPresionada;
        if (this.contadorClicks == 0) {
            tiempoAlPresionar = System.currentTimeMillis();
        }
        if (this.contadorClicks == 1) {
            tiempoAlDespegar = System.currentTimeMillis();
        }
        this.contadorClicks++;
        if (this.contadorClicks > 2) {
            this.contadorClicks = 0;
        }
    }

    /**
     *
     * @param x Ultima posición en la coordenada x cuando se arrastra el puntero en la pantalla
     * @param y Ultima posición en la coordenada y cuando se arrastra el puntero en la pantalla
     */
    protected void pointerDragged(int x, int y) {
        this.posicionYDesplazada = y;
        this.contadorClicks = 0;
        this.tiempoAlPresionar = 0;
        this.tiempoAlDespegar =0;
    }

    /**
     * @param x Posición en la coordenada x cuando se levanta el puntero de la pantalla
     * @param y Posición en la coordenada y cuando se levanta el puntero de la pantalla
     */
    protected void pointerReleased(int x, int y) {
        this.posicionYAlDejarDeTocar = y;
    }

    /**
     * Metodo que se encarga de mover la opción del menú hacia arriba, dependiendo de en que
     * opción se encuentre el usurario en ese momento
     */
    public void moverOpcionHaciaArriba() {

        //Verifica donde esta y a donde se tiene que mover
        if (fondoMenu == pantalla.inicio) {
            fondoMenu = pantalla.continuar;
        } else if (fondoMenu == pantalla.continuar) {
            fondoMenu = pantalla.instrucciones;
        } else if (fondoMenu == pantalla.instrucciones) {
            fondoMenu = pantalla.salir;
        } else if (fondoMenu == pantalla.salir) {
            fondoMenu = pantalla.creditos;
        } else if (fondoMenu == pantalla.creditos) {
            fondoMenu = pantalla.opciones;
        } else if (fondoMenu == pantalla.opciones) {
            fondoMenu = pantalla.marcadores;
        } else if (fondoMenu == pantalla.marcadores) {
            fondoMenu = pantalla.inicio;
        }else if (fondoMenu == pantalla.menus) {
             if(estadoTexto == 0){
              this.posicionTexto = (ALTO/3);
              estadoTexto = 1;
            }else if(estadoTexto == 1){
                this.posicionTexto = -(ALTO/6);
                estadoTexto = 2;
            }else if(pMario == true){
                 pMario=false;
                 pLuigi=true;
            }else if(pLuigi ==true){
                 pMario=true;
                 pLuigi=false;
            }
        }
    }

    /**
     * Metodo que se encarga de mover la opción del menú hacia abajo, dependiendo de en que
     * opción se encuentre el usurario en ese momento
     */
    public void moverOpcionHaciaAbajo() {
        //Verifica las opciones anteriores
        //Verifica donde esta y a donde se tiene que mover
        if (fondoMenu == pantalla.inicio) {
            fondoMenu = pantalla.marcadores;
        } else if (fondoMenu == pantalla.marcadores) {
            fondoMenu = pantalla.opciones;
        } else if (fondoMenu == pantalla.opciones) {
            fondoMenu = pantalla.creditos;
        } else if (fondoMenu == pantalla.creditos) {
            fondoMenu = pantalla.salir;
        } else if (fondoMenu == pantalla.salir) {
            fondoMenu = pantalla.instrucciones;
        } else if (fondoMenu == pantalla.instrucciones) {
            fondoMenu = pantalla.continuar;
        } else if (fondoMenu == pantalla.continuar) {
            fondoMenu = pantalla.inicio;
        }else if (fondoMenu == pantalla.menus) {
            if(estadoTexto == 2){
              this.posicionTexto = (ALTO/3);
              estadoTexto = 1;
            }else if(estadoTexto == 1){
                 this.posicionTexto = ALTO;
                 estadoTexto = 0;
            }else if(pMario == true){
                 pMario=false;
                 pLuigi=true;
            }else if(pLuigi ==true){
                 pMario=true;
                 pLuigi=false;
            }
        }
    }

    /**
     *Método que se encarga de manejar el efecto de deslizamiento del puntero para
     * que el usuario pueda cambiar las opciones del menú. Éste método funciona en conjunto con
     * moverOpcionHaciaAbajo() y moverOpcionHaciaArriba().
     */
    public void cambiarImagenDelMenu() {

        this.diferenciaAlDesplazar = Math.abs(this.posicionYAlDejarDeTocar - this.posicionYPresionada);

        if (this.posicionYPresionada < this.posicionYAlDejarDeTocar && ((this.diferenciaAlDesplazar) >= 50)) {
            this.moverOpcionHaciaAbajo();
            this.posicionYPresionada = 0;
            this.posicionYAlDejarDeTocar = 0;

        } else if (this.posicionYPresionada > this.posicionYAlDejarDeTocar && ((this.diferenciaAlDesplazar) >= 50)) {
            this.moverOpcionHaciaArriba();
            this.posicionYPresionada = 0;
            this.posicionYAlDejarDeTocar = 0;

        }
    }

    /**
     * Método que se encarga de mandar las acciones que se realizarán al dar doble click,
     * las cuales dependerán de en qué pantalla de opción se de el doble click
     */
    public void seleccionarOpcion() {
        if (dobleClick) {
                dobleClick = false;
            if (fondoMenu == pantalla.inicio) {
                estadoTexto = 0;
                juegoNuevo = true;
                fondoMenu= pantalla.menus;
            } else if (fondoMenu == pantalla.marcadores) {
                verMarcador = true;
                fondoMenu = pantalla.menus;
            } else if (fondoMenu == pantalla.opciones) {
                opcionesMenu = true;
                fondoMenu = pantalla.menus;
            } else if (fondoMenu == pantalla.creditos) {
                posicionTexto=ALTO+(pantalla.txt_creditos.getHeight()/2);
                verCreditos= true;
                fondoMenu = pantalla.fondoNegro;
            } else if (fondoMenu == pantalla.salir) {
                pantallaSalir = true;
                fondoMenu = pantalla.menus;
            } else if (fondoMenu == pantalla.instrucciones) {
                verInstrucciones = true;
                estadoTexto = 0;
                fondoMenu = pantalla.menus;
            } else if (fondoMenu == pantalla.continuar) {
//////                midlet.recuperarJuego();

            } else if(girarPantalla == true){
                cargandoJuego=true;
                dibujar();
                this.animador.terminar();
                if(pMario == true){
                    personaje=1;
                }else {
                    personaje=2;
                }
                midlet.setTipoDpersonaje(personaje);
                midlet.setDisplayactual(2);
                midlet.startApp();
            }else if (fondoMenu == pantalla.menus) {
                if((pantallaSalir == false)&&(verInstrucciones==false)&&(verMarcador == false)){
                    if((juegoNuevo == true)){
                    juegoNuevo=false;
                    estadoTexto=desactivarTexto;
                    pMario=true;
                    } else {
                    girarPantalla = true;
                    }
                }
            }
        }
    }

    /**
     * Método que se encarga de registrar cuándo hubo un doble click en el Menú
     */
    public void dobleClick() {

        this.diferenciaDeTiempo = this.tiempoAlDespegar - this.tiempoAlPresionar;
        if ((this.contadorClicks == 2) || (this.contadorClicks == 1)) {
            if (Math.abs(this.diferenciaDeTiempo) <= 400) {
                dobleClick = true;
                this.contadorClicks = 0;
            }
        }
    }
//Este metodo se llama en el animadorMenu  y es el que se encarga de actualizar
    //lo referente al menu.
    void actualizar() {
        if (!pausado){
        this.cambiarImagenDelMenu();
        this.seleccionarOpcion();
        this.verificarOpciones();
        this.dobleClick();
        if (verCreditos == true) {
            if(posicionTexto< (ALTO-pantalla.txt_creditos.getHeight())){
                estadoTexto=desactivarTexto;
                posicionTexto= this.getHeight();
                fondoMenu=pantalla.creditos;
                verCreditos=false;
            }else {
                posicionTexto=posicionTexto-3;
            }
        }
        if ((this.contadorClicks == 2) && (Math.abs(this.diferenciaDeTiempo) > 1000)) {
            this.contadorClicks = 0;
        }
     }
    }

    void dibujar() {
  
        // Borra la pantalla
        g.setColor(0xFFFFFF);
        g.fillRect(0, 0, ANCHO, ALTO);

        // Dibujar  todos los objetos de la aplicación

                g.drawImage(fondoMenu, ANCHO / 2, ALTO / 2, Graphics.VCENTER | Graphics.HCENTER);
                if (this.juegoNuevo == true) {
                    g.drawImage(pantalla.historia, (ANCHO / 2), posicionTexto, Graphics.VCENTER | Graphics.HCENTER);
                    if(estadoTexto == 2){
                          g.drawImage(pantalla.aceptar, (ANCHO / 2), 526, Graphics.VCENTER | Graphics.HCENTER);
                     }
                }  else if(cargandoJuego == true){
                     g.drawImage(pantalla.cargando, (ANCHO / 2),(ALTO/2), Graphics.VCENTER | Graphics.HCENTER);
                    }
                 else if(girarPantalla == true){
                     g.drawImage(pantalla.girarPantalla, (ANCHO / 2),(ALTO/2), Graphics.VCENTER | Graphics.HCENTER);
                    }
                else if(pMario == true){
                     g.drawImage(pantalla.personajeMario, (ANCHO / 2),(ALTO/2), Graphics.VCENTER | Graphics.HCENTER);
                    }else if(pLuigi == true){
                     g.drawImage(pantalla.PersonajeLuigi, (ANCHO / 2),(ALTO/2), Graphics.VCENTER | Graphics.HCENTER);
                    }
                 else if (this.pantallaSalir == true) {
                    g.drawImage(pantalla.seguroSalir, (ANCHO / 2), 119, Graphics.VCENTER | Graphics.HCENTER);
                    g.drawImage(pantalla.siNo, (ANCHO / 2), 234, Graphics.VCENTER | Graphics.HCENTER);
                    g.drawImage(pantalla.aceptar, (ANCHO / 2), 526, Graphics.VCENTER | Graphics.HCENTER);
                    if(opcionSalir == true){
                         g.drawImage(pantalla.selector, ((ANCHO / 2)-(pantalla.siNo.getWidth()/2)+18), 234, Graphics.VCENTER | Graphics.HCENTER);
                    }else{
                      g.drawImage(pantalla.selector, ((ANCHO)-(pantalla.siNo.getWidth()/2)+37), 234, Graphics.VCENTER | Graphics.RIGHT);
                    }
                  // g.drawImage(pantalla.selector, ((ANCHO / 2)-(pantalla.siNo.getWidth()/2)), 234, Graphics.VCENTER | Graphics.BASELINE);
                } else if (opcionesMenu == true) {
                    g.drawImage(pantalla.sonido, (ANCHO / 2), 119, Graphics.VCENTER | Graphics.HCENTER);
                    g.drawImage(pantalla.vibrar, (ANCHO / 2), 331, Graphics.VCENTER | Graphics.HCENTER);
                    g.drawImage(pantalla.siNo, (ANCHO / 2), 234, Graphics.VCENTER | Graphics.HCENTER);
                    g.drawImage(pantalla.siNo, (ANCHO / 2), 410, Graphics.VCENTER | Graphics.HCENTER);
                    g.drawImage(pantalla.aceptar, (ANCHO / 2), 526, Graphics.VCENTER | Graphics.HCENTER);
                     if(opcionSonido == true){
                         g.drawImage(pantalla.selector, ((ANCHO / 2)-(pantalla.siNo.getWidth()/2)+18), 234, Graphics.VCENTER | Graphics.HCENTER);
                    }else{
                      g.drawImage(pantalla.selector, ((ANCHO)-(pantalla.siNo.getWidth()/2)+37), 234, Graphics.VCENTER | Graphics.RIGHT);
                    }
                     if(opcionVibrar == true){
                      g.drawImage(pantalla.selector, ((ANCHO / 2)-(pantalla.siNo.getWidth()/2)+18), 410, Graphics.VCENTER | Graphics.HCENTER);
                    }else{
                      g.drawImage(pantalla.selector, ((ANCHO)-(pantalla.siNo.getWidth()/2)+37),410, Graphics.VCENTER | Graphics.RIGHT);
                    }
                }else if (verInstrucciones == true) {
                     g.drawImage(pantalla.txt_instrucciones, (ANCHO / 2), posicionTexto, Graphics.VCENTER | Graphics.HCENTER);
                     if(estadoTexto == 2){
                          g.drawImage(pantalla.aceptar, (ANCHO / 2), 526, Graphics.VCENTER | Graphics.HCENTER);
                     }
                }else if (verCreditos == true) {
                      g.drawImage(pantalla.txt_creditos, (ANCHO / 2), posicionTexto, Graphics.VCENTER | Graphics.HCENTER);
                }else if (verMarcador == true) {
                          dibujarAltosPuntajes(g);
                          g.drawImage(pantalla.aceptar, (ANCHO / 2), 526, Graphics.VCENTER | Graphics.HCENTER);
                }
        flushGraphics();    // Actualiza los cambios en la memoria de la pantalla
    }
    /**
     *Se encarga de detener el animador y mandar a destruir todas las imagenes
     */
    public void destruir(){
    menuDestruido =true;
    this.animador.terminar();
    pantalla.destruir();
    fondoMenu=null;
    pantallaSalir = false;
    opcionesMenu = false;
    opcionSalir=false;
    opcionSonido=true;
    opcionVibrar=true;
    juegoNuevo=false;
    girarPantalla=false;
    pMario=false;
    pLuigi=false;
    verInstrucciones=false;
    dobleClick = false;
  }
   //Cuando estas en una opcion verifica en que tipo de opcion estas
    private void verificarOpciones(){
        if (this.pantallaSalir == true){
            contadorClicks = 0;
            if ((this.posicionXPresionada >= ((ANCHO / 2)-(pantalla.siNo.getWidth()/2)+18-pantalla.selector.getWidth()) && this.posicionXPresionada <= ((ANCHO / 2)-(pantalla.siNo.getWidth()/2)+18+pantalla.selector.getWidth())) && (this.posicionYPresionada <= 284 && this.posicionYPresionada >= 184)) {
            opcionSalir=true;
            }else if ((this.posicionXPresionada >= ((ANCHO)-(pantalla.siNo.getWidth()/2)+37-pantalla.selector.getWidth()) && this.posicionXPresionada <= ((ANCHO)-(pantalla.siNo.getWidth()/2)+37+pantalla.selector.getWidth())) && (this.posicionYPresionada <= 284 && this.posicionYPresionada >= 184)) {
            opcionSalir=false;
            }else if (((this.posicionXPresionada >= ((ANCHO / 2)- 80)) && this.posicionXPresionada <= ((ANCHO / 2)+ 80)) && (this.posicionYPresionada <= 586 && this.posicionYPresionada >= 466)) {
                if(opcionSalir==false){
                    fondoMenu=pantalla.salir;
                    pantallaSalir=false;
                }else{
                    midlet.destroyApp(true);
                    midlet.notifyDestroyed();
                }
                }
         }else if (opcionesMenu == true) {
            contadorClicks = 0;
            if ((this.posicionXPresionada >= ((ANCHO / 2)-(pantalla.siNo.getWidth()/2)+18-pantalla.selector.getWidth()) && this.posicionXPresionada <= ((ANCHO / 2)-(pantalla.siNo.getWidth()/2)+18+pantalla.selector.getWidth())) && (this.posicionYPresionada <= 284 && this.posicionYPresionada >= 184)) {
            midlet.setSonido(true);
            }else if ((this.posicionXPresionada >= ((ANCHO)-(pantalla.siNo.getWidth()/2)+37-pantalla.selector.getWidth()) && this.posicionXPresionada <= ((ANCHO)-(pantalla.siNo.getWidth()/2)+37+pantalla.selector.getWidth())) && (this.posicionYPresionada <= 284 && this.posicionYPresionada >= 184)) {
            midlet.setSonido(false);
            }else if ((this.posicionXPresionada >= ((ANCHO / 2)-(pantalla.siNo.getWidth()/2)+18-pantalla.selector.getWidth()) && this.posicionXPresionada <= ((ANCHO / 2)-(pantalla.siNo.getWidth()/2)+18+pantalla.selector.getWidth())) && (this.posicionYPresionada <= 460 && this.posicionYPresionada >= 360)) {
            opcionVibrar=true;
            midlet.setVibrar(true);
            }else if ((this.posicionXPresionada >= ((ANCHO)-(pantalla.siNo.getWidth()/2)+37-pantalla.selector.getWidth()) && this.posicionXPresionada <= ((ANCHO)-(pantalla.siNo.getWidth()/2)+37+pantalla.selector.getWidth())) && (this.posicionYPresionada <= 460 && this.posicionYPresionada >= 360)) {
            opcionVibrar=false;
            midlet.setVibrar(false);
            }else if (((this.posicionXPresionada >= ((ANCHO / 2)- 80)) && this.posicionXPresionada <= ((ANCHO / 2)+ 80)) && (this.posicionYPresionada <= 586 && this.posicionYPresionada >= 466)) {
                fondoMenu=pantalla.opciones;
                opcionesMenu=false;
                }
             }else if (verInstrucciones == true){
                 contadorClicks = 0;
                 if (((this.posicionXPresionada >= ((ANCHO / 2)- 80)) && this.posicionXPresionada <= ((ANCHO / 2)+ 80)) && (this.posicionYPresionada <= 586 && this.posicionYPresionada >= 466)) {
                 if(estadoTexto == 2){
                           estadoTexto=desactivarTexto;
                           posicionTexto= this.getHeight();
                           fondoMenu=pantalla.instrucciones;
                           verInstrucciones=false;
                     }
                    
                }
             }else if (verMarcador == true){
                 contadorClicks = 0;
                 if (((this.posicionXPresionada >= ((ANCHO / 2)- 80)) && this.posicionXPresionada <= ((ANCHO / 2)+ 80)) && (this.posicionYPresionada <= 586 && this.posicionYPresionada >= 466)) {
                           fondoMenu=pantalla.marcadores;
                           verMarcador=false;
                     }

                }else if(juegoNuevo==true){
                 contadorClicks = 0;
                 if (((this.posicionXPresionada >= ((ANCHO / 2)- 80)) && this.posicionXPresionada <= ((ANCHO / 2)+ 80)) && (this.posicionYPresionada <= 586 && this.posicionYPresionada >= 466)) {
                 if(estadoTexto == 2){
                           estadoTexto=desactivarTexto;
                           posicionTexto= this.getHeight();
                           juegoNuevo=false;
                           pMario=true;
                     }
                }
             }
    }
  // Este metodo abre un objeto de tipo RecordStore para pintar los 5 puntajes mas altos
    //en la opcion de marcadores
    private void dibujarAltosPuntajes(Graphics g) {

        RecordStore altosPuntajes = null;
        RecordEnumeration enumeracionPuntajes = null;
        try {
            altosPuntajes = RecordStore.openRecordStore("Puntajes Altos", true);

        } catch (RecordStoreException ex) {
            ex.printStackTrace();
            g.drawString("ERROR ", 0, 0, 0);
        }
        try {

            enumeracionPuntajes = altosPuntajes.enumerateRecords(null, new Comparador(), false);
        } catch (RecordStoreNotOpenException ex) {
            ex.printStackTrace();
            g.drawString("ERROR ", 0, 0, 0);
        }

        int id;
        byte[] puntaje;
        String puntaje1 = "<--->", puntaje2 = "<--->", puntaje3 = "<--->", puntaje4 = "<--->", puntaje5 = "<--->";

        try {

            if (enumeracionPuntajes.hasNextElement()) {
                id = enumeracionPuntajes.nextRecordId();
                System.out.println(id);
                puntaje = altosPuntajes.getRecord(id);
                System.out.println(puntaje);
                puntaje1 = new String(puntaje);
                System.out.println(puntaje1);
            }
            if (enumeracionPuntajes.hasNextElement()) {
                id = enumeracionPuntajes.nextRecordId();

                puntaje = altosPuntajes.getRecord(id);
                puntaje2 = new String(puntaje);
            }
            if (enumeracionPuntajes.hasNextElement()) {
                id = enumeracionPuntajes.nextRecordId();

                puntaje = altosPuntajes.getRecord(id);
                puntaje3 = new String(puntaje);
            }
            if (enumeracionPuntajes.hasNextElement()) {
                id = enumeracionPuntajes.nextRecordId();

                puntaje = altosPuntajes.getRecord(id);
                puntaje4 = new String(puntaje);
            }
            if (enumeracionPuntajes.hasNextElement()) {
                id = enumeracionPuntajes.nextRecordId();

                puntaje = altosPuntajes.getRecord(id);
                puntaje5 = new String(puntaje);
            }

        } catch (RecordStoreNotOpenException ex) {
            ex.printStackTrace();
        } catch (InvalidRecordIDException ex) {
            ex.printStackTrace();
        } catch (RecordStoreException ex) {
            ex.printStackTrace();
        }

        g.setColor(0xFFFFFF);
        g.drawString("High Scores", ANCHO / 2, 20, Graphics.TOP | Graphics.HCENTER);
        g.drawString("1. " + puntaje1, ANCHO / 2, 60, Graphics.TOP | Graphics.HCENTER);
        g.drawString("2. " + puntaje2, ANCHO / 2, 80, Graphics.TOP | Graphics.HCENTER);
        g.drawString("3. " + puntaje3, ANCHO / 2, 100, Graphics.TOP | Graphics.HCENTER);
        g.drawString("4. " + puntaje4, ANCHO / 2, 120, Graphics.TOP | Graphics.HCENTER);
        g.drawString("5. " + puntaje5, ANCHO / 2, 140, Graphics.TOP | Graphics.HCENTER);


    }
 //Esta clase compara los valores que vamos a meter a los 5 puntajes mas altos
    // para acomodarlos  del mas alto al menor
    private class Comparador implements RecordComparator {


        public int compare(byte[] rec1, byte[] rec2) {

            String s1 = new String(rec1);
            String s2 = new String(rec2);
            int comp = s1.compareTo(s2);
            if (comp == 0) {
                return RecordComparator.EQUIVALENT;
            } else if (comp < 0) {
                return RecordComparator.FOLLOWS;
            } else {
                return RecordComparator.PRECEDES;
            }
        }


    }
//Este metodo lo que hace es que se llama automaticamente cuando el juego no
    //es la pantalla principal del celular y queda escondida por otra.
    protected void hideNotify (){
        pausado = true;
    }
    //Notifica que el juego es la pantalla que se esta mostrando en el celular
    protected void showNotify(){
        pausado =  false;
    }
}
